// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/keyboard/keyboard_ui.h"

#include "ui/aura/window.h"
#include "ui/base/ime/input_method.h"
#include "ui/base/ime/text_input_client.h"
#include "ui/keyboard/keyboard_controller.h"

namespace keyboard {

KeyboardUI::KeyboardUI()
    : keyboard_controller_(nullptr)
{
}
KeyboardUI::~KeyboardUI() { }

void KeyboardUI::ShowKeyboardContainer(aura::Window* container)
{
    if (HasKeyboardWindow()) {
        GetKeyboardWindow()->Show();
        container->Show();
    }
}

void KeyboardUI::HideKeyboardContainer(aura::Window* container)
{
    if (HasKeyboardWindow()) {
        container->Hide();
        GetKeyboardWindow()->Hide();
    }
}

void KeyboardUI::EnsureCaretInWorkArea()
{
    if (GetInputMethod()->GetTextInputClient()) {
        aura::Window* keyboard_window = GetKeyboardWindow();
        aura::Window* root_window = keyboard_window->GetRootWindow();
        gfx::Rect available_bounds = root_window->bounds();
        gfx::Rect keyboard_bounds = keyboard_window->bounds();
        available_bounds.set_height(available_bounds.height() - keyboard_bounds.height());
        GetInputMethod()->GetTextInputClient()->EnsureCaretInRect(available_bounds);
    }
}

void KeyboardUI::SetController(KeyboardController* controller)
{
    keyboard_controller_ = controller;
}

} // namespace keyboard
